/*
  文章管理
*/
$(function () {
  // 导入分页对象
  var laypage = layui.laypage
  // 分页参数
  var pagenum = 1
  var pagesize = 2

  // 基于模板引擎的过滤器格式化日期
  template.defaults.imports.formatDate = function (data) {
    // 实现日期的格式化：把参数data日期字符串转换为日期对象
    // 把字符串形式的日期转换为日期对象
    var d = new Date(data)
    var year = d.getFullYear()
    var month = addZero(d.getMonth() + 1)
    var day = addZero(d.getDate())
    var hour = addZero(d.getHours())
    var minutes = addZero(d.getMinutes())
    var seconds = addZero(d.getSeconds())
    // return year + '-' + month + '-' + day + ' ' + hour + ':' + minutes + ':' + seconds
    return year + '-' + month + '-' + day
  }
  // 补零函数
  function addZero(n) {
    return n < 10 ? '0' + n : n;
  }

  // 获取文章列表数据
  function loadArticleList (options) {
    $.ajax({
      type: 'get',
      url: 'my/article/list',
      data: options,
      success: function (res) {
        // 获取列表数据
        var tags = template('article-tpl', res)
        $('.layui-table tbody').html(tags)
        // 实现分页
        //执行一个laypage实例
        laypage.render({
          // 分页布局显示的位置
          elem: 'page',
          // 数据总数，从服务端得到
          count: res.total,
          // 当前页码
          curr: pagenum,
          // 默认每页显示的条数
          limit: pagesize,
          // 每页显示条数列表
          limits: [2, 10, 30, 40, 100],
          // 分页条布局效果
          layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'],
          // 页码切换时触发的动作
          jump: function (obj, first) {
            // obj 表示分页的所有参数；first用于判断首次加载
            // 这里触发时，需要修改当前页码
            pagenum = obj.curr
            // 切换每页显示条数时，修改pagesize
            pagesize = obj.limit
            // 重新加载接口数据
            if (!first) {
              // 首次不触发，切换页码时触发
              loadArticleList({
                // 页码：必须从1开始
                pagenum: pagenum,
                // 每页显示多少条数据
                pagesize: pagesize
              })
            }
          }
        })
      }
    })
  }
  var params = {
    // 表示页码：当前查询第几页数据
    pagenum: pagenum,
    // 表示每页的条数：每页显示多少条数据
    pagesize: pagesize
  }
  loadArticleList(params)

  // 加载分类筛选条件的数据
  function loadCateList () {
    $.ajax({
      type: 'get',
      url: 'my/article/cates',
      success: function (res) {
        if (res.status === 0) {
          // 渲染分类下拉列表
          var tags = template('select-tpl', res)
          $('#category').html(tags)
          // 必须调用layui提供的如下方法才能展示出列表
          layui.form.render('select')
        }
      }
    })
  }
  loadCateList()

  // 处理筛选操作
  $('#search-form').submit(function (e) {
    e.preventDefault()
    var fd = $(this).serializeArray()
    // 需要把筛选添加的参数拼接到请求参数中作为请求条件
    fd.forEach(function (item) {
      // 获取筛选条件的键和值
      var key = item.name
      var value = item.value
      // 把键和值分别添加到参数中
      // delete 的作用：删除对象的属性
      delete params[key]
      if (value) {
        params[key] = value
      }
    })
    loadArticleList(params)
  })

  // 控制文章的删除操作
  $('.layui-table tbody').on('click', '.layui-btn-danger', function (e) {
    // 获取要删除的文章id
    var id = e.target.dataset.id
    // 调用接口删除文章
    layer.confirm('确认要删除吗？', {icon: 3, title:'提示'}, function (index) {
      $.ajax({
        type: 'get',
        url: 'my/article/delete/' + id,
        success: function (res) {
          if (res.status === 0) {
            // 删除成功，刷新列表，关闭确认框
            loadArticleList(params)
            layer.close(index)
          }
        }
      })
    })
  })
})